Multimedia redirection is a remote access technique that allows multimedia content to be transferred in its raw format from the server to the client and then rendered by the client. This is in contrast to the server first rendering the content and then sending the rendered content as typical display data using the remote display protocol. In multimedia redirection, because the content is sent in its raw (or un-rendered) format, when the original data stream is highly compressed, less bandwidth is required to transfer the content. Also, transferring the rendering of the content to the client reduces the load on the server.
One ideal example of performing multimedia redirection is when the client-side application implements a remote display protocol (e.g., Microsoft's Remote Desktop Protocol, Citrix's ICA protocol, or another similar protocol). In particular, to perform multimedia redirection, the server and the client-side application utilize a virtual channel over which the multimedia content can be transferred. This virtual channel is established and maintained using the remote display protocol. Hereinafter, the client-side application that implements a remote display protocol to perform multimedia redirection will be referred to as a “remote display client.”
Native Client is a technology for running native complied code in a browser. For example, Native Client can allow an application written in C or C++ to be compiled, linked, targeted, and executed within the browser environment. To enable this, Native Client includes a toolchain (i.e., a compiler, a linker, an assembler, etc.) that are used to convert native source code into a module that can be executed within the browser. The Native Client toolchain can produce non-portable modules (referred to as nexe modules) which are architecture dependent or portable modules (referred to as PNaCl or pexe modules) which are not.
Native Client executes these modules in a sandbox, or in other words, within an environment that limits access to system resources through a limited set of APIs. With Native Client, a remote display client can be developed using native code and run within the browser. In such cases, the remote display client could be configured to employ the limited set of APIs of the sandboxed environment to implement multimedia redirection. However, these APIs may not provide a satisfactory level of functionality to enable the rendering of multimedia content in an efficient manner.